﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades.Karaoke;
using System.Configuration;
using System.Data.SqlClient;

namespace Datos.Karaoke
{
    public class KarEquipoDAL
    {
        public static string cnx = ConfigurationManager.ConnectionStrings["ApplicationServices"].ToString();

        public static List<KarEquipo> ListarEquipos()
        {
            SqlConnection con = new SqlConnection(cnx);
            SqlCommand com = new SqlCommand("SP_KAR_EQUIPOS_LISTAR", con);
            com.CommandType = System.Data.CommandType.Text;
            try
            {
                con.Open();
                SqlDataReader dr = com.ExecuteReader();
                List<KarEquipo> lista = new List<KarEquipo>();
                KarEquipo obj = null;
                while (dr.Read())
                {
                    obj = new KarEquipo();
                    obj.IDEquipo = dr["IDEQUIPO"].ToString();
                    obj.Tipo = dr["TIPO"].ToString();
                    obj.Serie = dr["SERIE"].ToString();
                    obj.Marca = dr["MARCA"].ToString();
                    obj.Color = dr["COLOR"].ToString();
                    obj.Estado = dr["ESTADO"].ToString();

                    lista.Add(obj);
                }
                dr.Close();

                return lista;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
            }
        }

        public static List<KarEstado> ListarEstados(int tipoEstado)
        {
            SqlConnection con = new SqlConnection(cnx);
            SqlCommand com = new SqlCommand("SP_KAR_ESTADOS_LISTAR " + tipoEstado, con);
            com.CommandType = System.Data.CommandType.Text;
            try
            {
                con.Open();
                SqlDataReader dr = com.ExecuteReader();
                List<KarEstado> lista = new List<KarEstado>();
                KarEstado obj = null;
                while (dr.Read())
                {
                    obj = new KarEstado();
                    obj.ID =  Convert.ToInt32(dr["ID"].ToString());
                    obj.Nombre = dr["NOMBRE"].ToString();

                    lista.Add(obj);
                }
                dr.Close();

                return lista;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
            }
        }

        public static int RegistrarInforme(KarMantenimientoEquipo obj)
        {

            SqlConnection con = new SqlConnection(cnx);
            SqlCommand com = new SqlCommand("[dbo].[SP_KAR_MANTENIMIENTO_EQUIPO_REGISTRAR]", con);

            com.Parameters.AddWithValue("@idequipo", obj.CodEquipo);
            com.Parameters.AddWithValue("@idestado", obj.idEstado);
            com.Parameters.AddWithValue("@observacion", obj.Observacion);
            com.Parameters.AddWithValue("@usuario", obj.usuario);

            SqlParameter p = new SqlParameter();
            p.Direction = System.Data.ParameterDirection.Output;
            p.Value = 0;
            p.ParameterName = "@Identity";

            com.Parameters.Add(p);

            com.CommandType = System.Data.CommandType.StoredProcedure;
            try
            {
                con.Open();
                com.Transaction = con.BeginTransaction();
                int result = com.ExecuteNonQuery();
                if (result > 0)
                {
                    result = Convert.ToInt32(com.Parameters["@Identity"].Value);
                    com.Transaction.Commit();
                }
                else
                {
                    com.Transaction.Rollback();
                }

                return result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
            }
        }

        public static List<KarMantenimientoEquipo> ListarHistorial(string equipo)
        {
            SqlConnection con = new SqlConnection(cnx);
            SqlCommand com = new SqlCommand("SP_KAR_MANTENIMIENTOS_LISTAR '" + equipo + "'", con);
            com.CommandType = System.Data.CommandType.Text;
            try
            {
                con.Open();
                SqlDataReader dr = com.ExecuteReader();
                List<KarMantenimientoEquipo> lista = new List<KarMantenimientoEquipo>();
                KarMantenimientoEquipo obj = null;
                while (dr.Read())
                {

                    obj = new KarMantenimientoEquipo();
                    obj.fecha = dr["FECHA"].ToString();
                    obj.estado = dr["ESTADO"].ToString();
                    obj.Observacion = dr["OBSERVACION"].ToString();

                    lista.Add(obj);
                }
                dr.Close();

                return lista;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
            }
        }
    }
}
